perm filename CANON.RAS[UP,DOC]11 blob sn#656208 filedate 1982-04-30 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00016 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	---- ImPrint-10 Printer system overview --- by RAS ----		12/7/81
C00012 00003	Preparing an IMP file from listings and TEX:
C00016 00004	CPrint: printing your IMP file 
C00021 00005	Fonts for the ImPrint-10
C00025 00006	MakImp: switches
C00031 00007	        extra information: font expansion, other switches, sources
C00035 00008	        text output and errors
C00041 00009	ImPress format, Read-IMP program
C00044 00010	                Overview
C00051 00011	ImPrint-10: starting the CPU
C00055 00012		    Console messages while printing
C00058 00013		    Starting the ImPrint-10 Printer
C00063 00014		    Turning Off Canon
C00064 00015		    Diagrams
C00067 00016
C00072 ENDMK
C⊗;
---- ImPrint-10 Printer system overview --- by RAS ----		12/7/81

      Address questions, suggestions and bug sightings to RAS.  
   (including questions about MakImp, CPrint and Rst fonts, font
  conversion, using an ImPrint, supplies and quality of the output.)

OVERVIEW:
There is no such thing as a  Canon printer at Margaret Jacks Hall.  We  do
have its successor,  an ImPrint-10, manufactured  and `maintained' by  the
Imagen Corporation.   The  ImPrint-10  in our  basement  is  hereby  named
`Canon' to honor its ancestor.

The ImPrint-10 printer  system is  made up of  a Canon  LBP-10 printer,  a
printer controller board, an M68000  based micro, a serial line  connected
to a console terminal and  either a 9600 baud  serial line connected to  a
host or an  ethernet board with which printing requests are received.

The ImPrint-10 is a  stand-alone entity.  We  (at Sail) talk  to it via  a
9600 baud  terminal  port and  protocol.   The HeathKit  console  terminal
alongside  allows  direct  communication   with  the  ImPrint  micro   for
initialization, indecipherable status messages and debugging.

ImPrint software, inside the ImPrint CPU:
    ImPress Translater, Painter program
    Texto currently at Diablo- will be in ImPrint-10 someday
	currently can only be used from IAZ's account at Diablo
	    with output sent to the ImPrint in LTP's office

Sail software:
    PTex, to create DVI files from TEX files;
    MakImp, to translate DVI files and listings into IMP files;
    Troff→ImP, coming soon to a CPU near you;
    Scribe→ImP, is it coming?  Only its hairdresser knows for sure,
		there is currently a C version somewhere.
    CPrint, to send an IMP file to the ImPrint for printing.

Roughly, the procedure for using the ImPrint is:
    Prepare your ImP file, run PTex on a TEX file, then run MakImp;
    Make sure the ImPrint CPU is ready (page 11);
    Make sure the ImPrint printer is ready (page 13);
    Send your file to Canon with DO CPrint[can,sys] (page 4).

Documentation is available:
    Canon.ras[up,doc]	- how to use Canon and supporting programs
    ImPress.ras[up,doc]	- ImPress language description and file format
    Rst.ras[up,doc]	- Rst font file description
    Canon.con[can,sys]	- Canon's current physical condition

NOTES:
    IF Canon SPEWS PAPER, PULL OUT THE PAPER TRAY and reinitialize (page 11).
    There are no headers or title pages yet, so any listings lying around
	are fair game for use as samples.
    Since there is no spooler, your printing is done WHILE YOU WAIT, so
	when it has started printing, instead of waiting, PICK UP YOUR OUTPUT.

But don't stop here, the details are vital.  Read on!


Preparing an IMP file from listings and TEX:

LISTINGS:
Create an IMP file from a listing with MakImp.   Simply "R MakImp" and you
will be prompted for the name of the input file.  

Currently we do not have many  fonts for listings.  The default is  CMSA10
at magnification 0.8 which gives 67 lines per page and 122 characters  per
line.  See doc on the \f switch (page 7) to choose your own font.


TEX Sources:
Compile  your  program in  MYFILE.TEX  with the Pascal version of TEX, PTEX:
  .R  PTex  (report  any problems to IAZ) 
  *\input myfile 
This will create a file MYFILE.DVI on your directory.

Make a  .IMP file  from your .DVI  file with  MakImp:
  .R  MakImp		(report any  problems to  RAS) 
and  to the  prompt, type  MYFILE (or MYFILE.dvi).


TEX FONTS:   
    There are two types of font files that you need to print TEX  sources,
TFM files contain dimensions of characters in a device independent format.
Rst files contain the images of the characters at a particular  resolution
and magnification as well as pertinent dimensions.

    PTex gets its font information from  TFM files in some directory;  the
default is [TEX,SYS].  Most fonts  currently have TFM there.  MakImp  only
uses  Rst  files.   The  default   directory  is  [Can,Sys].   Below   are
instructions on creating fonts.

    Both PTex  and MakImp  look for  a font  file first  on the  directory
specified in the TEX  declaration, then on the  default directory.  If  no
directory is specified in the declaration, your current directory is used.
(Does TEX try the default if the one you specify is incorrect?)

    If I have  my own special  TFM and Rst  files in my  FON directory,  a
proper TEX font definition is  thus "\font z=cmsy10[fon,ras]".  If I  wish
to use system fonts, I would say "\font z=cmsy10".  Note that there is  no
guarantee that the Rst font in  [Can,sys] actually corresponds to the  TFM
file in [Tex,sys].  A check-digit is written into both files, but not used.

    If a font  file is not  found, MakImp will  try substituting the  same
font unmagnified  and  if  this fails  it  will  give you  lots  of  error
messages.  Someday it will allow you to specify an alternative font.

    For more information on Rst fonts, see page 5.

CPrint: printing your IMP file 

    To print IMP (Impress) files, DO CPRINT[can,sys].  It will ask you for
the filename, on the end of which it will append the string `.IMP'.   Thus
you can  not  specify  a  directory, you  must  print  from  your  current
directory.

    If someone else is using Canon, you will be asked to wait.   Sometimes
this program never finishes,  even though the printing  job is done.   You
might go downstairs  and, if  the Canon  is idle,  send a  message to  the
person using it.  You can  find out their user  name with the command  .PJ
tty57.  If you have to map to their  screen, to free up the line you  must
type <call> and then give the Monitor command FINISH.

The sending  program  is  quiet  as it  runs,  unless  the  ImPrint  needs
attention, paper, toner, premix or TLC.  It also gives occasional  useless
comments, While it is printing, or  soon after, you should hop  downstairs
and pick up your listing.

For information about the communication protocol, see ImProt.doc[can,sys].

Fonts for the ImPrint-10

Currently, only Rst fonts are used by programs that talk to the ImPrint-10,
namely MakImp and Texto.  At Sail, they are kept in the directory [can,sys],
and can be made by running a special version of metafont that resides there.

MAKING Rst FONTS:  
    Rst format  is documented  in Rst.inf[can,sys].   Rst source  code  is
stored as .RAD files on [can,sys].  Documentation is in Rst.ras[up,doc].

    You can make an Rst font file by running the copy of MetaFont that  is
in [Can,sys] using mode=5.  Make sure you use the CMBASE file in [can,sys]
too.  The surest way  to do this  is by connecting  to [can,sys] with  the
monitor command: ".al can,sys".

    Rst fonts  come in  different magnifications;  an Rst  font's name  is
NAME.R## where ##  is one  or two  digits that  specify the  magnification
times 10.  Thus cmr10  at twice magnification is  in a file cmr10.r20,  at
half magnification is called cmr10.r5.

    So, to make an Rst file on can,sys:
.al can,sys
.ru mf
*mode=5; input cmr10		% to make a font at magnification 1.0 or:
*mode=-5; mag=1.2; input cmr10	% to make a font at magnification 1.2

OTHER PROGRAMS:
    RdRst allows you to look at the  inside of an Rst file.  It sends  its
output either  to the  screen  or to  a  file.  Type  \?  to it  for  more
information.  RdRstI  is  similar,  but only  gives  information  on  each
character's dimensions.

    Soon, hopefully, RdRst's ascii output file will have a standard format 
that can be edited and there will be a MakRst program to convert it back
into an Rst file.

    Also, we'll want a program to convert FNT files into the standard ascii
format.  How about some Xerox format to ascii too?

SAMPLE FONTS
    The programs MakSam and MakSsm make samples of Rst fonts.  They are not
quite upto date, but will be up soon.  MakSam is for text fonts, displaying
each character plus text.  MakSsm makes a smaller sample excluding the text.

MakImp: switches

MakImp excepts several switches.  After the file name, type "/"
    and any combination of the following:
(Note: currently there is no way to produce multiple copies)

P # # PAGE RANGE (default -100:250) eg "p1:2" or "p7"
    For DVI files, TEX page numbers are used.  Note that this means that
	if TEX never does a "\advcount0" call, every page is numbered 0.
    For listings, the first page in number 1, new pages begin with each
	form-feed character.

M #  Magnification (range 0.1-9.9); eg "m1.2"
    For DVI files, this magnifies the whole document by #.  Note that you
	can get into trouble by making the text larger than the page, in
	which case MakImp will complain endlessly and chop off the extra.
	If given, this mag will override the recommended mag given by TEX
	in the DVI file, ie the results of a TEX "\magnify 1200" statement.
    For listings, this will only magnify the font used to make the listing,
	so the text will not run off of the page.  Note that the default
	font is at mag 0.8 already.

Setting Margins.  The default margins put a one inch margin on the top and
    left of most TEX output and listings.  Examples show how to move margins
    an inch toward the center of the page.  Note that these are all absolute
    pixel coordinates.  On an ImPrint-10 there are 240 pixels per inch.
    It is currently physically impossible for the ImPrint to print outside of
    the given range.
← #   Left   Margin (default 262,  range 0-1982); eg "←262"
→ #   Right  Margin (default 1982, range 0-1982); eg "←1982"
↑ #   Top    Margin (default  130, range 0-2330); eg  "↑130"
→ #   Right  Margin (default 2330, range 0-2330); eg "↓2332"
    TEX assumes there will be a left margin and may write left of it by giving
    negative x-coordinates.  MakImp will get violent if a TEX location is left
    of zero.   If  this happens,  look  at the  number  MakImp tells  you  and
    recompile, increasing the margin to at least that absolute quantity.   And
    do not increase it so much that the page goes too far to the right!

    The top margin is  added to every y-coord  of your document, lowering  the
    page.  TEX starts printing  with a baseline at  y=0, which to Canon  means
    about 1/2 inch from the top of the paper; ↑130 moves the document down  so
    TEX's y=0 baseline starts  about 10 points (cmr10  font height) below  the
    top of the page.  The bottom margin is an absolute pixel value below which
    you can not print.  Currently, Canon does not print below this coordinate,
    so if you get an error that some y value is too large, raise the  document
    on the paper by  making the ↑  value smaller.  The  left and right  margin
    values work like top and bottom, respectively.

T # Type of input file, # is one of: "L","D","R", specifying that the type of
    input file is either a listing, a DVI file or an Rst file.  MakImp will
    look for a file of the specified type if you give one, otherwise, it will
    use the file extension to determine the type, an unknown extension meaning
    the file is a listing.  If the file has no extension, MakImp will look for
    a file with no extension, then try a few extensions it knows and infer the
    type of fiie accordingly.


MakImp will echo its parameters as it begins processing your file, eg:
    Input file name: big
	Found DVI source big.dvi
	M= 1.0  standard-paper  pp:-100→250  ←262 →1982 ↑=130 ↓2332

        extra information: font expansion, other switches, sources

The following two switches are for listings:
F s Font s, where s is a string (default CMSA10.R8); eg "CMSA10.R20"
    This font is used for printing listings.  Note that a font magnification
    times 10 (the .R8 extension means at 0.8 mag) is included in the font
    name.  If no extension is given, @1.0 is assumed.  And as noted above,
    this magnification is multiplied by the global file magnification to get
    the final font mag.
↔ # Spacing #, (default 1, range 1:4); eg "↔2" gives double spacing


Rst FONT FILE EXPANSION
Given an rst  file as input,  or a name  and the switch  "tR" MakImp  will
produce pictures of the font expanded.  The user will be prompted for  the
size of each  pixel and  which characters ze  wants to  be printed.   This
gives quick feedback to people creating small fonts where it is  important
to see individual pixels.  To view a magnified font, the extension must be
included in the file name.

OTHER SWITCHES
! The following swithes should not be used;
S s/l Size of paper- standard is 8.5x11 (the default), legal is 8x14.
    Currently, though, Canon can only print on 8.5x11 paper, so there's
	no reason to use this switch.  Even if it could take longer paper,
	the software can not print on it.

! The following is not well implemented, try not to use it;
I #   Input data space (default 2, range 2-6); the maximum
	number of 8k chunks of storage bytes available for input on a page.
	This depends on how much space is available in the ImPrint CPU,
	which is currently =55k.  The rest of the space is given to 
	glyph data.

! The following are not up to date;
B#    deBugging flags, default-none. "+" gives 1,2,4;  "-" gives 1-6;
	1-diagnostics  2-flow of control  3-verbose flow  4-debugging data
	5-verbose data 6-  7-deletepack info  8-addnewchar info
	9-draw chars on last page
	All output goes to terminal and .ERC file.
 
MakImp SOURCES
Sail sources for MakImp and related files are kept as .SAD files on
[can,sys].  They are uptodate as of 1/25/82- ras.

The Pascal version of MakImp is currently under construction.  The earliest
it might appear is in early February...




        text output and errors

READING MakImp TEXT OUTPUT:
With no debugging flags set, MakImp prints a little output as it runs, eg:
    [5.][4.][3.][2.][1.]
The number is the page number of  the current page, the period is  printed
when the page  has been parsed,  the "]"  when the ImPress  page has  been
output to the Imp file.

If any errors are encountered, a .ERC file is opened and all messags go to
that file as well as to the screen.

When any debugging flag has been set,  MakImp writes all output to a  .ERC
file and produces at least one line of output for every page, eg:
    [3⊂⊃⊂⊃.(c677)(ε91)(g13000 p9041)(p4312→1110)  totpage=0 (o)]

The first number is the  current page number according  to TEX.  A "⊂"  is
printed whenever a font file is opened  to be read; when it has been  read
in, the  "⊃" is  printed.  The  period signifies  that the  page has  been
parsed.

The "(c#)" tells how many glyph objects are on the page, "(ε#)" tells  the
number of different glyphs that are currently defined, "(g# p#)" tells how
much glyph data is needed total, and how much needed on the page.  If  the
number in "g#" is larger than  a certain amount (currently 48k), then  the
next field will appear.  "(pA→B)" means a pack was done, and the amount of
glyph data went from A to B.   TotPage is the total number of  description
bytes on the page.  Currently the number for the totpage is wrong.


USER ERRORS:  
A user error  is that which  causes an  error message.  It  is most  often
caused by a missing font file or typesetting off of the page.  The  former
can presently only be  prevented by knowing which  fonts are in  [can,sys]
and generating any that are not there.  The latter can be fixed by running
MakImp again, resetting the margins' values with switches, as described on
page 8.  Both  types of errors  can be most  easily caused by  exaggerated
magnification.  Also, a TEX error message telling of a box that is grossly
overfull might cause a "page-too-wide" error.

MakImp ERRORS:
MakImp is a research  project of fluxuating  priority.  Bugs are  promptly
addressed, if  not  fixed, but  there  have  been no  efforts  to  perform
exhaustive testing.  Please report any bugs.  Sending your ERC file and  a
pointer to the original DVI file will help immeasurably.

The only crashing  error of which  I know,  occurs if there  are too  many
objects and  typesetting commands  on the  page.  Currently  20000  words,
80000 bytes are allocated to the command array, much more than the ImPrint
can handle and much more than appears on any reasonable page.  Because  of
the use of  Sail byte  pointers, bounds checking  is not  obvious and  not
done.  Overflowing this  array could cause  unpredictable errors...   This
will be fixed soon.

ImPress format, Read-IMP program

".Read ImPress" points you to ImPres.ras[up,doc], which describes both the
ImPress language and ImPress file format.  There is also an ImPress manual
produced by Imagen and a file hidden somewhere on a Vax.

Basically, ImPress files contain  the images of  characters to be  typeset
and a description of where to print each character or rule.  ImPress files
are byte oriented, on Sail 4 bytes are packed per word in the (left)  high
order bytes.


READING ImPress FILES- RdImp
RdImp translates ImPress files at Sail into ascii .IMR files.  The  format
is not quite like  the ascii format  in the manual which  I found hard  to
read.  In addition, search for "!!"'s in the text to find caught errors or
warnings.  Comments are enclosed in  parentheses.  Right before POPs,  and
NL commands, the current page coordinate is added as a comment.

To run RdImp, just type ".R RdImp" to Sail and you will be prompted for an
IMP file name.  Pictures of characters  are not included in the IMR  file.
To view these, add the switch "/c" to the file name and the images will be
sent to a .IMC file.


WRITING ImPress FILES
Currently, there  is  no  IMR→IMP  program, although  it  would  be  nice.
Someday it will be added as a MakImp input capability.


                Overview

This description is for people writing programs that will produce  ImPress
files.  It is meant only as  an overview, the ImPress manual contains  the
actual specification of the ImPress language.

The Imp language is quite stable, except for the addition of some graphics
commands.  The file format is also stable, except for the first few  bytes
of the file.  An overview  od the format of an  IMP file at Sail  follows.
This format is sent directly to our ImPrint.

[January 25, 1982]
<#>	    - an ascii decimal "1":"6", the number of 8k blocks to give to
	      the input data, the rest of 55k goes to character storage.
	      MakImp's default is "2", allowing plenty of room for fonts.
<string>    - any chars followed by a null, usually the file name.
"ImagImPr"  - NOT followed by a null.  

So, if "?"stands for the null character, the file WEAVE.IMP, made from  a
TEX DVI source would  start with the  string "2WEAVE.TEX?ImagImPr" in  the
first 19 bytes of the file, one character per byte.

Next come  the  pages.   Before  each page  come  character  deletion  and
definition commands.   These can  come in  the page,  but result  in  less
efficient operation of the ImPrint.

MakImp puts  character deletions  and definitions  BEFORE pages.   A  page
starts with a PAGE command contains typesetting commands and ends with  an
ENDPAGE command.   Typesetting commands  consist of  commands to  move  an
abstract cursor  and  to print  rules  (black rectangles)  and  predefined
characters at the cursor's position.

For an example of these commands, see the Sail source  ImpDef.sai[imp,ras]
for  the  command  codes  and  the  file  ImpFun.sai[imp,ras]  for  little
procedures that  output  the  commands-  they  will  tell  you  the  exact
parameters for each command.

The ImPrint has  finite space for  glyphs so you  may need to  tell it  to
delete some  between  pages.  MakImp  has  two space  counting  variables,
GLYPAGE knows how much glyph (cHar) space is used on a page, GLYDATA knows
how much is in the Imprint already AND on the page.
¬
MakAmp parses a page, sending the  typesetting commands to one buffer  and
the glyph defs to another.  As it @∃CifAQQJAa¬OJXA%LAOYeICiB↓O←Kf↓i←↑A!SOPX4∃ShAMi←af↓IKMS9S]NA9Kn@A
QCef0AS]g∃eiS]≤AEYC9WfAo!K\@AQQKrA¬eJA]∃KIKH0@AC]⊂~∃←kQakif↓C\AKIe←dA5KggC≥J\~∀4∃βMi∃dAiQ∀AaCO∀@ASf↓aCeg∃HXAi!S]OfACeJ↓gK]hAi↑AQQJA∪5 @AM%YJ\@↓
SegPX@AS_~∃OYeICiB↓SfAi=↑@AQ%OPXA¬YX@A
QCef↓]←h@↓kgKH↓←\@AQQJAa¬OJ@A¬eJAI∃YKiK⊂@AoSQP~∃I∃YKiJ5GQCd↓G←[[¬]If\A)QK8A]KnAGQCIfACe∀AgK]PAi↑@↓iQJA%≠ AM%YJAMI←Z@AQQJ~∃
QCdA	kMMKH\@@AQQK\AQQJ@AAβ∂
A
←[[C9H@ASLA←kiAkh@A→←YY←]KHAEd@ACY0A←L@↓iQJ~)G←[[¬]IfA→a←ZAQQJA←QQKdA	kMMKHXAiQ∃\AiQ∀A≥	Aβ∂
A
←[[C9H\~∀4∃/QK8ACYX↓iQJAACOKf↓CeJ@↓MS]Sβ≠#↔⊃bβS#∃∧*>≠'d)β∂?nkπ;⊃αβ'Mβ>K[↔9π#=βSF)↓α&m4+≠Nc∃1β>C'∂!εK@~εm}rε&⎇lRpH!Q$Nr∞Mε*ε=↔ε∞>LW∩εLXfNv≡M⊗}r8m]8;Y∞5λ≥~T→[|M\=λ∪l@⊂:42H14z⊂≠px⊂4\β exactly
that of The Rst font  file.  See Rst.sai[rsT,ras], ImpFon.saiSi@5`YeCM:@A`P~∃C]⊂A∪[a→k\]g¬S7S[@YeCgtA`dAα3?Iβ/Cπ7Cd+@~ε|dεF␈t∩ε>O≡εBεL\fNv≡M⊗}r∧λ6}n\≥f h-≡2ε>≡lVrr∧λ7/↔,]g&g∃Dεvzivw"LV6Nm_

≥{H_m⎇;8;LNh≠Y,\λ≥≠dY(→m≡Y;KAQA"U
<Y(≡Y(∃∞⎇h≥≡.<h≠ld→[sNNkλ∀L↑z9→-nλ_;LD→>≥↑[X;∧9Yλ∞N{h≥∂≡→<h
|C"\L↑≤Y<l]]_=
≥{\k∧∞X<⎇↑H_;LD→;Xm|→9βD∧⊂⎇<N,;]≠∂∃α⊂0v≠⊂37g≥9P:yYr⊂0y→PεE2↑:2y7_v⊂90\z2y⊂→7w:9K⊂⊂"w_wr2rλ37w:≤P0y2H77z≡rz⊂"→s4w2Y⊂0w2λ6tst≥⊂72{→yεE0\82pyλ0yP2↑82y7_v⊂37[:9W⊂λεEεE⊂t0y0Xz2y9H7s⊂2↑:2y7_v⊂37[:9P7→rr⊂7≠P37w≥⊂22s~w4z4[w⊂1w[vpw2λ12qp]yrP:~2FE!Z0y0q]2y⊂ $efinition command associates an image with a particular character
of a font.  Resident fonts need a font definition, to know which font to
asociate with a particular fOnt number.  They need no character definitions
because that infOrmation is resident.  For resident fonts, MakImp needs to 
know each character's printing width as well as how much memory @∃CGP@4∃eKg%IK]h↓I←]h↓eKck%eKf@!iQKr↓CeJAIKCHA→eWZAAe←ZAQ↑A[C%\A[K5←erA¬bA]K∃IKHR8~∃πkIeK]i1rP⊃β&C↔K∃εK∃βvyβK↔≤¬⊗&.nDε&↑nN2ε∞lDπ&FT
vN'M∧ε6NLTε6←-\↔"ε≡4πN=λ≥
q"XY$→9Z-l9H∧↓"C"A∃KKKEeKKKEeKKKEeKKKEeKKKEeKKKEeKKKEeKKKEeKKKEeKKKEeKKKEa"C"AQ@↓I;4≤M≥],&πH≤⎇≡]~;Lt≥~→$λt∃#!!"S[nL.H~,d⊂x;M⎇H~<d
[⎇λ∞↑λ~
}→9]-M≡(_$
9<|l≤y(_,-⎇=λ
≡≤h_m⎇Y~=
≥{H≥l≡hβ"ML9]λ
≥H≥~T→Z;T⊂x;M⎇KX{mkxx;EN}<w%a"C"JM→(⊂j
(~_.4≥~≤L\(≤⎇≡→<nD
x:=¬D⊃~8,⎇[|⎇
≤h≠;mm=≠|D;Yλεg~h≠-⎇Z=≠n%C"U.
{H≤
}y<K.↑λ≤∞-y|X-↑h_<LT≤Y8,D→\[mT∀∀SiT_;Y∧λx;[md→;]↑\h≥
(∃x-≡λ≤⎇≡→+C!!"C"Jx25λ
:⊂5⊃!QU~~.4~<h∞M→(≤∞-;]~-lh≤⎇≡→+H∧
~→(λ:∃(~.4≥x:.M;Yhm|H_-←(→=L]]λ∞>8zλ≡h_#!-9<|l≤y(→N-{(≥
(≤y.-8;λ
M;Y(∞=9{X-M~;Yd(≤≤M≥]λ≤L↑=9<nEHλ∃
∞<h≥∞↑[Z;Lt≠{C!.~→(	≥4≤Z-nλ≤≥.Nh~=∧
;]≠d∞~→(
|:=λ∞>_=→%a"C"JO<~;Lt≥~→$¬⊗Y;M≡~
(∧{{\m⎇→)|dλTQ0)4λ~y/∀≥z;
Dλ→[n,y(→-n≤↑(∧
;]≠d∞~→(∧εN~c!-;{Z.M|KH∧
≡<~-lh_;O∀≠⎇~↑H_z≡X8⎇↑H≠{D∞~→(={\{mL(≥z-Mλ→[n,y(→-n≤↑(∧
;]≠aQ]~→$λ~89mm|⎇~,4∪;p↔~z7y↔βEαE"∩`cg'Tj$aP∪gg$j∪iεE*~4yP4\P:ybY⊂37`2 software debuggifg∞  PeRhaps someday there'll be a 
pointer here to dkcumentation about all the o@AiS←]L\\\@↓
←dAQQJA[=[K]h0ACYX4∃sOj↓QCmJ↓iVAW9←nASLAiQCP@E"@qeKikI\|DAEkSif↓iQJA5←]Si=dXAe∃i`↔KvK;≥βN{UβSxh+S#*β←π' βGSπ&)9↓α∞s⊃α
 the 68k monitor.

68K MONITOR
The 68000 board comes with a small monitor for debugging, which, on Canon,
 can be activated by hitting the console's BREAK key.  Two commands are of
interest. "C <return>" causes program continuation and "Z <return>" causes
system initialization.

INITIALIZATION
To initialize the ImPrint-10, either power it up, with the on/off switch
on the back side of the card cage (on the right end), or press the console's
BREAK key and type "Z <return>".  It will enter wait state and be ready to
respond to print requests from Sail.

	    Console messages while printing

PRINTING MESSAGES
Upon beginning a print request, three sizes are given:
INP is the number of bytes given to input data
GLY is that available to use as glyph storage
PWI is a mystery
These numbers are in hex (1000 hex = 4096).



ERROR MESSAGES
During printing,  Canon  sends  any  error messages  to  the  (Heath  Kit)
terminal.  Do not try to read them-  they are written in a South  American
dialect specially made to be scrolled off of the screen at high  velocity.
Some tanslations follow:

Beginning print of page # 0001; done
    No problems!!!

Object Area Overflow:  
    Too many instances of things are typeset on the page;

Invalid Glyph Dimensions:  
    Glyph's currently can not have zero height or width.

Undefined Glyph:  
    Printing a glyph that has not  been defined, or whose dimensions  were
invalide results in this error.

Something out of paper:		
    This is a euphemism for something being typeset OFF of the paper,  too
far to the right, left, too far up or down.

Unexistent command

Bad Mode

Waiting for permission to compress the Glyph Table

Waiting for Input

Input Page Too Big

Bus Error - currently hap@AK]fA]QK\Ae←jAiIrAi↑↓aeS]PAGQCICGiKIbAiQ¬hACe∀~∀∪i=↑AYCIOJXA∃NXAi¬YYKd↓iQC\bdpAASqKYL\~∀~)∪LAs=j@Ai!S]VAQQJ@A∃ee←dA[KgMCOKf↓CeJ@↓GesaQSF@A¬]HAg!←kYHAae←YSIJ@↓[←eJ4∃S]M=e[Ci%←\XAQQChOL@AoQ¬hA∩@↓iQ←k≥QhX@↓i←↑\A≠kGαA↓β3∂#↔I1αβ←#↔rβ←∃↓ε;↔Q↓ελ4+O∧{?3↔∩aβ';&+33'>+;Q↓ε+KK?∩↓β7↔∨≠π∨↔~↓β←'fa↓β*βO↔;"↓βπ≡Y↓βSz↓βS#*↓βCKNsP4+⊗+GW↔∨#↔I9rp4(0%↓α↓αOS∂∪S';:βS#∃∧K6CKNsQ5EααCK'w#↔H4Ph*;?&)iβO.)β;↔G!βCπ>)β≠?∩β∪'π?∪π5β}1α∂πv{9∨Mπ≠↔SWαβ'9β&C∃β∂≠↔7↔w!84(hR&:&$Jε2&TJ:≥α$B∃αB∀J:R⊗∪Q↓4R↓↓↓α'+K9β}qβS#*βCK'w#↔Iβ/≠';≥π##∃βfK∨∃ε∪3π∂ZβC3π∨#'
β&{∨∂3*β?9β&C∃β≠⊗{;Q0hS3↔≠"βO'∪*q↓αSF)β∨K.+9βK.∪e?>'QβfK∨#Qαβ←'3bβ3'vYβ≠?∩β¬β≠/9βO↔≡{;∪Mr↓↓α'0h+π3bβ?→β&C∃β3N;#SMεK∃β}q1βS↔Iβ←πO#';≥π+;S'bβS#∃∧~BUβO→βK↔∞#e9↓∧K→βSF)↓α∞¬(4*&~βK↔π'I1βS↔IβSW⊗s';≥εKQβ?61βπ;"β?9β∞;π'9ε{IβC∞s'∂/Ns≥βπ~β?WSfK;↔⊃ε∪↔3?:p4(4T∩VRR|rMh4R↓↓↓α&C∃αS/≠Q?K/≠↔QβfK∨#Qε#?↔Mαβ;?Qπ;?K-r↓αW"β'→↓πK?Uβπ+O!β&C∃↓β&+OQ?⊗+O↔PhSWS&{91βN{U∨3bβS↔3bβS#∃∧~BUβ&yβCKNsQβ?/!βCπ>+Mβ?2β∨K'"β7πK←→9↓αεcWMβN{U∨3`h+∨↔"βS#∃εk↔OO∞;∃↓
π∪';SNs≥↓α/C↔K∂O≠∃αK/W↔O&+⊃	β}q↓βSF)β∂?w≠?3∃r↓αCW≡A↓βSF(4+/#S?9ε∨π'rβS=β&KOπf)β'Qr↓αO?}qβ'Qπ;'31ε∪∃β∂F;∨↔"βO=β&CπQβ.∂!βπ∪↔OMε{_4+&C∃β/#S?9ε;↔;↔⊗S↔MεSWOQαβ?;∃ε+c↔K≡Kk∃β≡yβg?*↓β←?r;Qβ#∂3∃βSzβ←?K↔I↓βπ⊗{WP4VKSMβ∨#πS∃ph(4)α↓↓αSF)β?SF+IβS>yβW'#?;MεK∃β&KOπf+⊃84Ph*⊗J∀zIα∞|r∩&RLz:Miα4)↓α↓α∪?∨+7↔;&S'?rβ'MβNqα'6π∪';Q?→↓#K.!1βOεKKπ1ε∪?W;"Iβ;?&+??ZqαKN+≠3erq84*>C↔9βfKQ1β&C∃β≠␈+Iβ3N;#SMαC←'SB↓βO//#∂#↔~βπ?6)βS#.i%β7.91β7∪?5βf+≠Q↓π#<4+⊗K∨#QR↓#S#*β≠K?w!β?→π##∃βπ∪';S/⊃β'Mπ##∃β≡K∪∃β>KS!β&C∃β3N;#SMHh(4*⎇*Qα>2αBεB-⊃iα↔O##↔IαβS#∃πβπC↔∩β∂πO≡+SS∃εKM↓βNsOSπfc↔⊃βNs∂?K⊗+∂S3Jβ?I↓π##∀4TK6CKNsQβ;.+∪Mβn{K∃βεC↔Ir↓α'→π##∃βfSS↔∩aβK↔n{[∃β&C∃βf∂-βεC↔Iπ#Kπeε3K?4hSS#∃εc↔≠Qπ≠'∪∃αβ?→β&C∃↓αNjCK'w!↓#+/≠QβC.c1↓β>+;S3JβWQαβ≠'Knce%9αα≠';"↓βS#(h+Cπε+I1αtzR∃↓B	%↓β≡K↔≠.c3eβ>C'∂!π≠'∪∃εKMβWαβπ;⊃ε∪⊃β≡{7∃βεC↔Iε3π∂∃π+A↓β&x4+SF)βSK∂I9↓α⊗+';O/∪Q↓β&C∃βS⊗e↓#π+Q↓βO!β'9εCCK␈C'7π&+3e↓π##∃β⊗K∨#QαβC3π≡)04+π+O!β>+;S3Jβπ;⊃π##∃β'∪πeβ>K31β⊗)β∨WN#↔⊃βNq%84Ph*:⊗,"MαB∀*6&aR↓↓α7∂K∃β&C∃↓αNjCK'w!↓β;.+∪Mβn{K∃↓πβK↔7OA9↓α'∪e↓β␈β↔;'v9↓βπv 4+∂f{O';:βS#∃εc↔≠Qε3K?;"↓βCπv+19↓∧K→βSF)β3'>CQ↓βε+KO'∨#Mβ'"βCK?⊗3eαβK↔πfcd4+v+↔∪MεKQ9↓∧3';⊃ε	β?'#3∃↓F	α∂πv{9β␈#S3∃π;'S!ε	βC'∨#WK∃ε{→β¬ε#K?Aεc'/∃π##∀4Wβ'∂S/∪∃βπ⊗{[∃β&C∃↓βfK∨#Qbβ3??Z↓β↔f{]βSF)↓α'mβK';";MβS∞∪3∃↓ε;⊃β⊗+3?]αβS#∀hSSπf)β;↔∂⊃βS#*β∪??∩Iβπ;"↓βO#∞[∃β'"β←↔3bq↓α?ε+9↓β&C∃β7N#∪3∃πβπ;↔bβπ;⊃αβC?W⊂h+#πf1β?→π##∃β⊗{SS3*β';SzβS#∃εC?3∃εK9βSF)β3∞≠-βS⊗eβSFQβ3.∪Mβ&yβS#*βSπ;Zp4(4UαεB⊗∩α*ε5RαO?7*βCπC/⊃β7πJβ∃↓ε≠πW∨G!β'9π##∃αNjCK'w!β';vK∪Mr↓αSKJ↓β?C.s';≤hSπ;⊃ε≠3?ONs≥βSF)β≠K}sQβ3.3QβC∞s↔19αα'→β&C'Mβ&{↔Mβv{Qβ←␈∪-1β&C↔K∃εkπeβ⊗+π33Hh+∃π≠?7∃πβπC↔∩β∂πW>CQ9↓¬∪↔7?6)β'Qαβ∂πK.3W33Jq↓α≠␈⊃β#↔g↓βO↔*βCπ∨/→↓Eak⊃E↓β}04+SF)↓
'mβK';"α2
Ak	Aα?ε+KπSN{9α7∞sWπ1∩q↓↓α/≠Wπ3gIβg?*β∂π9πβW31π≠SW∂Z↓βCπε+H4+␈+Qβ≠⊗{5β←F+K∃↓εKQβ∨}+Mβ'r↓β?Iπ;#↔K*β'Q↓ε≠?7↔~β?WQr↓αg?*↓β∂πrβSKeαβ?C↔vK;≤4W##';?→βWAb↓βW"β∃↓ε≠πK↔7+19↓¬∪↔7↔⊗+I↓β&yβCW≡A↓βSF)βK↔"↓βK↔≡+Qβ3/3↔I↓ε#?←8hS↔≠␈∪∃β∂f{O';:βS#∃π#?Aβf+≠Q↓εc'⊃9∧K→βg␈)β;↔.!β#↔g↓1↓β≡+↔-α∀
M1αe"Aβ?∩↓α2⊗_h*αO∞K184Ph*:⊗,"MαR|r⊗IiεK→βSF)β3''#3∃β&{;↔Iαβ?S&c∃β.C';⊃π##∃β7∪?;Qεk'∪∪.aβCπv+1↓βO_4+↔oβSe1π#π/∃εKQβ?/!↓#S/∪9α∞≥9β↓E≠)βπ;"βCW3bβ'Qβ␈+Q%1ε;⊃β⊗+C3π≡)β'Qπ;'S!αβ∧4+7+31β}s∃↓#π∪?π⊗ceβ.c?]↓π##∃β&3∃Jβ7π/Ns≥βO/∪∃↓β&C∃βS}s↔IβO→βO#∞[↔9↓ε;⊂4W##∃β⊗cπ∂-αβ[π36)β'Mαβ?9↓π##∃β⊗{SS3*↓βCK␈β↔K3Jβπ;⊃αβCWQαβ'Qβ⊗∂-↓εK;S=αβS#∀hR'6C⊗K;Q9If it is not empty, the toner is clogging the valve, try turning
the bottle CW & CCW a few times.

	    Turning Off Canon

If you need to turn Canon off, there are two power switches.  The one
on the right side of the back turns off the CPU.  The one on the left,
front turns off the printing machinery.  Turn the printing part off
to avoid shocks when cleaning the corona wires or the drum or if you
need to poke in from the front to clean out jammed paper.

Please do not disconnect other wires.  If you do fiddle with anything,
please leave a message in Canon.con[can,sys].

	    Diagrams

			   top view:

							   CPU
___________						  on/off
|   |      |		------------------------------------/\---
|   |      |		|  Laser Printer   .            |       |
| Console  |	--------+                  .            |       |
| Terminal |	|       |                  .            |       |
|   |      |	| paper |                  .            | CPU   |
|   |      |	|  tray |                  .            |  cage |
------------	|       |      top lid     .            |       |
		--------+                  .            |       |
			|                  .            |       |
			---\/----------------xxxxxxxxx-----------
			 printer     ↑        ↑ lights
			  on/off     |        |
				     |        |
				 side door   middle panel

	Note that only the location of the lights are shown 



	**************************************************

			and the insides:

				back
		------------------------------------/\---
		|                  .            |       |
	--------+!                 .            |       |
	|       |!                 .            |       |
	| paper |!          D  R  U. M       () | CPU   |
	|  tray |!                 .   INK   || |  cage |
	|       |!                 .   TRAY  || |       |
	--------+!                 .         || |       |
		|↑    X            .  O      -- |       |
	←left   -|-\/-↑---------------↑-------↑----------
		 |    |            Premix    Toner bottle
	       handle |		    hole
		      red reset lever